home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr05 / ddeexamp.zip / DDE.C < prev    next >
C/C++ Source or Header  |  1993-07-08  |  2KB  |  118 lines

  1. /*
  2.     dde.c
  3.  
  4.     This module handles all the DDE support not provided by stddde.c
  5.  
  6. */
  7.  
  8. #include "ddeexec.h"
  9. #include <stdlib.h>
  10.  
  11. //
  12. // DDE variables
  13. //
  14.  
  15. static DWORD dwDDEInst = 0;         // DDE Instance value
  16.  
  17. //
  18. // Format lists
  19. //
  20.  
  21. WORD MyFormats[] = {
  22.     CF_TEXT,
  23.     NULL};
  24.  
  25. //
  26. // Local functions
  27. //
  28.  
  29. HDDEDATA SysHelpRequest(UINT wFmt, HSZ hszTopic, HSZ hszItem);
  30.  
  31.  
  32. //
  33. // Startup our DDE services
  34. //
  35.  
  36. void SetupDDE(HINSTANCE hInstance)
  37. {
  38.     //
  39.     // Do the basic initialization
  40.     //
  41.  
  42.     InitializeDDE(hInstance,
  43.                   SZ_SERVICENAME,
  44.                   &dwDDEInst, 
  45.                   NULL,
  46.                   CBF_FAIL_EXECUTES);
  47.  
  48.     //
  49.     // Add each system/item pair we support
  50.     //
  51.  
  52.     AddDDEItem(SZDDESYS_TOPIC, 
  53.                SZDDESYS_ITEM_HELP,
  54.                MyFormats,
  55.                SysHelpRequest,
  56.                NULL);
  57.  
  58.     //
  59.     // Add each topic/item pair we support
  60.     //
  61.  
  62.  
  63.  
  64.  
  65.  
  66.     //
  67.     // Add any topics for Execute connections
  68.     //
  69.  
  70.     AddDDETopic(SZ_DRAWRECT,
  71.                 NULL,
  72.                 NULL,
  73.                 NULL);
  74.  
  75.     //
  76.     // Add the commands for this execute set
  77.     //
  78.  
  79.     AddDDEExecCmd(SZ_DRAWRECT,  "Ellipse",  EllipseFn,  4,  4);
  80.     AddDDEExecCmd(SZ_DRAWRECT,  "Rectangle",RectangleFn,4,  4);
  81.     AddDDEExecCmd(SZ_DRAWRECT,  "Line",     LineFn,     4,  4);
  82.     AddDDEExecCmd(SZ_DRAWRECT,  "Erase",    EraseFn,    0,  1);
  83.     AddDDEExecCmd(SZ_DRAWRECT,  "Pen",      PenFn,      1,  1);
  84.     AddDDEExecCmd(SZ_DRAWRECT,  "Brush",    BrushFn,    1,  1);
  85.     AddDDEExecCmd(SZ_DRAWRECT,  "Text",     TextFn,     3,  3);
  86.  
  87. }
  88.  
  89. //
  90. // Return a string in CF_TEXT format
  91. //
  92.  
  93. HDDEDATA MakeCFText(UINT wFmt, LPSTR lpszStr, HSZ hszItem)
  94. {
  95.     if (wFmt != CF_TEXT) return NULL;
  96.  
  97.     return DdeCreateDataHandle(dwDDEInst,
  98.                                lpszStr,
  99.                                lstrlen(lpszStr)+1,
  100.                                0,
  101.                                hszItem,
  102.                                CF_TEXT,
  103.                                NULL);
  104. }
  105.  
  106. //
  107. // Return the Help info
  108. //
  109.  
  110. HDDEDATA SysHelpRequest(UINT wFmt, HSZ hszTopic, HSZ hszItem)
  111. {
  112.     static char sz[] = "DDE Help for the DDE Execute Service.";
  113.  
  114.     return MakeCFText(wFmt, sz, hszItem);
  115. }
  116.  
  117.  
  118.